查看原文
其他

NGS科研必备!数据整合神器之dplyr包

博文 生信者言 2022-03-29


dplyr包可用于处理dataframe格式数据,相较于它的前身plyr包,大幅提高了速度,本文着重介绍在数据整合时使用频率较高的几个函数,定会让你在数据整合过程中更为方便快捷。

 

dplyr也是大神HadleyWickham的大作,HadleyWickham可谓是改变了R的人,其代表作品还有ggplot2、resape等非常有名的软件包,先用大神的帅照镇楼:



dplyr包的开源代码可在github上阅读,软件包安装如下:


# 安装大神所有的软件包:

install.packages("tidyverse")

 

# 或者只安装dplyr:

install.packages("dplyr")

 

# 也可安装开发版的dplyr:

# 安装github上的包,需要先安装devtools工具包:

#install.packages("devtools")

devtools::install_github("tidyverse/dplyr")

 

本文主要介绍5个常用的函数:

  • mutate() 对已有列数据变换并添加新的列,类似标准函数transform

  • select() 按照列名筛选列,可结合starts_with,ends_with,contains,matches,one_of,num_range和everything等使用

  • filter() 按照已定条件对行做过滤,类似标准函数subset

  • arrange() 对数据进行排序,类似标准函数order

  • summarise() 对数据进行汇总操作,可结合group_by使用,类似标注函数aggregate

install.packages("dplyr")

library(dplyr)

# iris数据集作为演示,head()函数查看其前6行:

head(iris)



mutate()函数的使用:




mutate()函数是对已有列数据变换并添加为新的列,类似标准函数transform:

 

# 添加一个新的列new,并且new是Sepal.LengthSepal.Width的乘积:

df_mutate<- mutate(iris, new = Sepal.Length * Sepal.Width)

head(df_mutate)


 

select() 函数的使用:


按照列名筛选列,可结合starts_with,ends_with,contains,matches,one_of,num_range和everything等使用:

 

# 变量名称以Petal开头的变量

df_select<- select(iris, starts_with("Petal"))

# 变量名称以Width结尾的变量

df_select<- select(iris, ends_with("Width"))

# 变量名称包含etal的变量

df_select<- select(iris, contains("etal"))

# 变量名称匹配t的变量

df_select<- select(iris, matches(".t."))

# 只筛选Petal.Length,Petal.Width两个变量

df_select<- select(iris, Petal.Length, Petal.Width)

# 筛选所有的变量

df_select<- select(iris, everything())

# 把需要的变量赋值给vars,然后用one_of模式筛选

vars<- c("Petal.Length", "Petal.Width")

df_select<- select(iris, one_of(vars))


 

filter() 函数的使用:


按照已定条件对行做过滤,类似标准函数subset,在使用filter之前需要了解一下几个逻辑操作符:

·      ==>>=, <, <=, %in%

·      &|!xor()

·      is.na()

·      between()near()


# 筛选Speciessetosa的数据

df_filter<- filter(iris, Species == "setosa")

# 筛选Sepal.Length大于5,并且Speciessetosa的数据

df_filter<- filter(iris, Sepal.Length > 5 & Species == "setosa")

# 筛选Sepal.Length大于5,并且Species包含在c("setosa","versicolor")中的数据

df_filter<- filter(iris, Sepal.Length > 5 & Species %in%c("setosa","versicolor"))


 


arrange() 函数的使用:




对数据进行排序,类似标准函数order:

 

# 按照Sepal.Length从小到大排序

df_arrange<- arrange(iris, Sepal.Length)

# 双变量排序,按照Sepal.Length从小到达,并且按照Sepal.Width从大到小排序

# desc()表示从大到小

df_arrange<- arrange(iris, Sepal.Length, desc(Sepal.Width))

 


summarise函数的使用:




对数据进行汇总操作,可结合group_by使用:

 

# 计算Sepal.Length的平均值和标准差:

df_summarise<- summarise(iris, mean(Sepal.Length), sd(Sepal.Length))




# 按照Species分组,计算Sepal.Length的平均值和标准差

iris_groups<- group_by(iris, Species)

df_summarise<- summarise(iris_groups, mean(Sepal.Length), sd(Sepal.Length))

# dplyr的计算是以tbl格式返回的,我们可以转成dataframe, 当然这步没必要,但是为了方便显示:

df_summarise<- as.data.frame(df_summarise)

 


本文重点介绍这5个函数,当然dplyr包还有其他比较方便的函数,比如join,set,distinct,sample,bind,ifelse等函数,也是非常有用,感兴趣的同学可以去学习一下。



/End.



扫码关注,获取更多精彩内容

喜马拉雅FM搜索并订阅:生信者言;收听内容:

《一分钟听懂NGS基础概念》,让生信分析不再遥不可及

《亲爱的姑娘,你值得被温柔以待》,11个真实的人物故事

《众病之王:癌症传》,一起聆听人类对抗癌症的斗争史

回复文字:果然科学,看一篇好玩的科普文。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存